unit clsBackupVenda;

interface

uses Dm, dbtables, biblio, SysUtils, clsNotaVenda;

type
  TBackupVenda = class(tobject)
  private
{$HINTS OFF}
    Bkp_Serie: string;
    Bkp_numero: string;
    Nota_serie: string;
    Nota_numero: string;
    Ent_codigo: string;
{$HINTS ON}
  public
    Bkp_Serie_Orig: string;
    Bkp_Numero_Orig: string;
    Codigo: double;
    Cod_Entidade: string;
    recibo_frete: boolean;
    function Retorna_Ultima(serie: string): string;
    function Retorna_UltimaTemp(serie: string): string;
    function Ultima_nota: string;
    function Retorna_PrimeiroUltimo(x, serie, numero: string; var data: TDateTime; imp: Boolean): string;
    function Retorna_FirsLast(x, serie: string; dataI, dataF: TDateTime; imp: Boolean): string;
    function Gravar(P_bkp_serie, p_bkp_numero, P_bkp_nota_serie, P_bkp_nota_numero, P_ent_codigo: string): Byte;
    function Recuperar(P_bkp_serie, p_bkp_numero, P_bkp_nota_serie, P_bkp_nota_numero, P_ent_codigo: string): Byte;
    function RecuperarNota(P_bkp_serie, p_bkp_numero: string; var P_Not1, P_Not2: string): Byte; overload;
    function RecuperarNota(P_bkp_serie, p_bkp_numero, p_entidade: string; var P_Not1, P_Not2: string): Byte; overload;
    function RecuperarNota1(P_bkp_serie, p_bkp_numero, p_entidade: string; var P_Not1, P_Not2: string): Byte;
    function RecuperarNota2(p_bkp_numero, p_entidade: string; var P_Not1, P_Not2: string): Byte;
    function RecuperarNotaTerceiro(P_bkp_serie, p_bkp_numero, p_Entidade: string; var P_Not1, P_Not2: string): Byte;
    function RecuperarEntidade(P_bkp_serie, p_bkp_numero: string): string;
    procedure RecuperarBackup(p_serie, p_nota: string; var p_bkp_nota: string);
    procedure RecuperarBackup2(p_serie, p_nota, p_ent: string; var p_bkp_nota: string);
    function Excluir(P_bkp_nota_serie, P_nota_numero, P_nota_numero2, P_ent_codigo: string): Byte;
    procedure consultarNota(var P_q: TQuery; P_data: TDateTime);
    procedure consultarNotaEntidade(p_ent_codigo: string; P_data: TDateTime; var P_q: TQuery);
    procedure consultarNotaSerie(p_Serie: string; P_data: TDateTime; var P_q: TQuery);
    procedure consultarNotaFiscal(var P_q: TQuery; P_data: TDateTime; tipo: integer);
    procedure consultarNotaSerieEnt(p_ent_codigo, p_nota_serie: string; P_data: TDateTime; var P_q: TQuery);
    //function  ExcluirPedido(P_Ped_numero:string):byte;
    //procedure consultarPedido(var P_q:TQuery;p_bkp_pedido:string);
    function RetornaBck(nota, serie, entidade: string): string;
    function RetornaBck1(nota, serie: string): string;
    function RetornaNota(bkp_nota, bkp_serie, entidade: string): string;
    function RecuperarPorBackup(bkp_nota, bkp_serie, entidade: string; var Nota: TNotaVenda): boolean;
  end;

implementation

uses clsParametros;

{ TBackupVenda }

function TBackupVenda.Excluir(P_bkp_nota_serie, P_nota_numero,
  P_nota_numero2, P_ent_codigo: string): Byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.DatabaseName := dmint.db.DatabaseName;
  tq.Active := False;
  tq.SQL.Clear;
  tq.params.Clear;
  tq.SQL.Add('DELETE FROM Backup_venda where ' +
    'nota_serie=:k_Nota_serie and (nota_numero=:K_nota_numero or nota_numero=:K_nota_numero2) and Ent_codigo=:k_Ent_Codigo');
  tq.ParamByName('k_nota_serie').AsString := P_bkp_nota_serie;
  tq.ParamByName('k_nota_numero').AsString := StrZero(P_nota_numero, 9);
  tq.ParamByName('K_Nota_numero2').AsString := StrZero(P_nota_numero2, 9);
  tq.ParamByName('k_Ent_Codigo').AsString := StrZero(P_ent_codigo, 5);
  try
    GeraLog('BACKUP_VENDA', 'Excluir');
    tq.execSQL;
    Result := 1;
  except
    Result := 0;
  end;
  tq.Close;
  tq.Free;
end;

function TBackupVenda.Gravar(P_bkp_serie, p_bkp_numero, P_bkp_nota_serie,
  P_bkp_nota_numero, P_ent_codigo: string): Byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(DmInt.Db);
  tq.DatabaseName := dmint.Db.DatabaseName;
  tq.Active := False;
  tq.SQL.Clear;
  tq.params.Clear;
  tq.SQL.Add('SELECT * FROM Backup_Venda where Bkp_Serie=:k_Bkp_Serie and Bkp_numero=:k_bkp_numero ' +
    'and nota_serie=:k_Nota_serie and nota_numero=:K_nota_numero and Ent_codigo=:k_Ent_Codigo');
  tq.ParamByName('k_Bkp_serie').AsString := (P_bkp_serie);
  tq.ParamByName('k_Bkp_numero').AsString := StrZero(p_bkp_numero, 9);
  tq.ParamByName('k_nota_serie').AsString := (P_bkp_nota_serie);
  tq.ParamByName('k_nota_numero').AsString := StrZero(P_bkp_nota_numero, 9);
  tq.ParamByName('k_Ent_Codigo').AsString := StrZero(P_ent_codigo, 5);
  tq.Open;
  if tq.eof then begin
    tq.SQL.Clear;
    tq.params.Clear;
    tq.SQL.Add('INSERT INTO Backup_venda(BKP_SERIE,BKP_NUMERO,NOTA_SERIE,NOTA_NUMERO,ENT_CODIGO,BKP_SERIE_ORIG,BKP_NUMERO_ORIG) ' +
      'VALUES(' +
      ':k_Bkp_serie,' +
      ':k_Bkp_numero,' +
      ':k_nota_serie,' +
      ':k_nota_numero,' +
      ':k_Ent_Codigo,' +
      ':k_Bkp_Serie_Orig,' +
      ':k_Bkp_Numero_Orig)');
  end else begin
    tq.SQL.Clear;
    tq.params.Clear;
    tq.SQL.Add('UPDATE Backup_venda SET ' +
      'Bkp_serie=:k_Bkp_serie,' +
      'Bkp_numero=:k_Bkp_numero,' +
      'nota_serie=:k_nota_serie,' +
      'nota_numero=:k_nota_numero,' +
      'Ent_Codigo=:k_Ent_Codigo,' +
      'Bkp_Serie_Orig=:k_Bkp_Serie_Orig,' +
      'Bkp_Numero_Orig=:k_Bkp_Numero_Orig ' +
      'where Bkp_serie=:k_Bkp_serie and Bkp_numero=:k_Bkp_numero and nota_serie=:k_nota_serie and ' +
      'nota_numero=:k_nota_numero and Ent_Codigo=:k_Ent_Codigo');
  end;
  tq.ParamByName('k_Bkp_serie').AsString := P_bkp_serie;
  tq.ParamByName('k_Bkp_numero').AsString := StrZero(p_bkp_numero, 9);
  tq.ParamByName('k_nota_serie').AsString := P_bkp_nota_serie;
  tq.ParamByName('k_nota_numero').AsString := StrZero(P_bkp_nota_numero, 9);
  tq.ParamByName('k_Ent_Codigo').AsString := StrZero(P_ent_codigo, 5);
  tq.ParamByName('k_Bkp_Serie_Orig').AsString := Bkp_Serie_Orig;
  if Bkp_Numero_Orig <> '' then
    tq.ParamByName('k_Bkp_Numero_Orig').AsString := StrZero(Bkp_Numero_Orig, 9)
  else
    tq.ParamByName('k_Bkp_Numero_Orig').AsString := '';
  tq.Close;
  GeraLog('BACKUP_VENDA', 'Gravar');
  tq.execsql;
  Result := 1;
  tq.free;
end;

function TBackupVenda.Recuperar(P_bkp_serie, p_bkp_numero,
  P_bkp_nota_serie, P_bkp_nota_numero, P_ent_codigo: string): Byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := False;
  tq.SQL.Clear;
  tq.SQL.Add('SELECT * FROM Backup_Venda where Bkp_Serie=:k_Bkp_Serie and Bkp_numero=:k_bkp_numero ' +
    'and nota_serie=:k_Nota_serie and nota_numero=:K_nota_numero and Ent_codigo=:k_Ent_Codigo');
  tq.ParamByName('k_Bkp_serie').AsString := (P_bkp_serie);
  tq.ParamByName('k_Bkp_numero').AsString := StrZero(p_bkp_numero, 9);
  tq.ParamByName('k_nota_serie').AsString := (P_bkp_nota_serie);
  tq.ParamByName('k_nota_numero').AsString := StrZero(P_bkp_nota_numero, 9);
  tq.ParamByName('k_Ent_Codigo').AsString := StrZero(P_ent_codigo, 5);
  tq.Open;
  if tq.eof then begin
    Result := 0;
    Bkp_Serie_Orig := '';
    Bkp_Numero_Orig := '';
  end else begin
    Result := 1;
    Bkp_Serie_Orig := tq.FieldByName('Bkp_Serie_Orig').AsString;
    Bkp_Numero_Orig := tq.FieldByName('Bkp_Numero_Orgi').AsString;
  end;
  tq.Close;
  tq.Free;
end;

function TBackupVenda.RecuperarNota(P_bkp_serie, p_bkp_numero: string; var P_Not1, P_Not2: string): Byte;
var
  tq: TQuery;

begin
  tq := TQuery.create(DmInt.Db);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := False;

  try
    tq.SQL.Clear;
    tq.Params.Clear;
    tq.Close;
    tq.SQL.Add('Select * ' +

      'from Backup_venda ' +

      'where bkp_serie = :k_Bkp_serie and ' +
      '      bkp_numero = :K_bkp_numero');

    tq.ParamByName('k_Bkp_serie').AsString := p_bkp_serie;
    tq.ParamByName('k_Bkp_numero').AsString := StrZero(p_bkp_numero, 9);
    tq.Open;

    P_Not1 := '*';
    P_Not2 := '*';

    if tq.eof then begin
      Result := 0
    end else begin
      Result := 1;
    end;

    while not tq.Eof do begin
      if P_Not1 = '*' then begin
        P_Not1 := tq.FieldByName('nota_numero').AsString
      end else begin
        P_Not2 := tq.FieldByName('nota_numero').AsString;
      end;

      Cod_Entidade := tq.FieldByName('ent_codigo').AsString;
      tq.Next;

    end;

  finally
    tq.Close;
    FreeAndNil(tq);

  end;

end;

procedure TBackupVenda.RecuperarBackup;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.SQL.Clear;
  tq.Params.Clear;
  tq.SQL.Add('Select * from Backup_Venda where Nota_Serie=:a and Nota_Numero=:b');
  tq.params[0].AsString := p_serie;
  tq.params[1].AsString := p_nota;
  tq.Open;
  p_bkp_nota := tq.FieldByName('bkp_numero').AsString;
  cod_entidade := tq.FieldByName('ent_codigo').AsString;
  Bkp_Serie_Orig := tq.FieldByName('bkp_serie_orig').AsString;
  Bkp_Numero_Orig := tq.FieldByName('bkp_numero_orig').AsString;
  tq.Close;
  tq.free;
end;

procedure TBackupVenda.consultarNota(var P_q: TQuery; P_data: TDateTime);
begin
  p_q.SQL.Clear;
  p_q.Params.Clear;
  p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,e.ent_nome from ' +
    'Backup_venda b,notavenda n, entidade e where n.notv_datafat>=:k_P_data and ' +
    'b.nota_serie=n.nota_serie and b.nota_numero=n.nota_numero and ' +
    'b.ent_codigo=n.ent_codigo and e.ent_codigo=n.ent_codigo group by ' +
    'b.Bkp_serie,b.bkp_numero,b.ent_codigo,n.notv_datafat,e.ent_nome');
  p_q.ParamByName('k_P_data').AsDate := P_data;
end;

function TBackupVenda.Retorna_Ultima;
var
  tq: TQuery;
  xNumNota: string;
  Parametros: TParametros;
begin
  Parametros := TParametros.Create;
  Parametros.Recuperar('1');
  tq := TQuery.Create(dmint);
  tq.DatabaseName := dmint.db.DatabaseName;
  tq.Active := false;
  tq.SQL.Clear;
  tq.params.Clear;
  tq.SQL.Add('Select max(bkp_numero) ultimo ' +
    'from Backup_Venda B, NotaVenda N ' +
    'where (n.Nota_Numero = b.Nota_Numero and n.Nota_Serie = b.Nota_Serie) ' +
    'and bkp_serie=:a ' +
    'and Notv_Emitente = ' + quotedstr('P'));
  //tq.SQL.Add('Select max(bkp_numero) ultimo from Backup_Venda where bkp_serie=:a');
  tq.params[0].AsString := serie;
  tq.Open;
  if tq.FieldByName('ultimo').AsString = '' then
    xNumNota := '000000001'
  else
    xNumNota := strzero(tq.FieldByName('ultimo').asinteger + 1, 9);

  tq := TQuery.Create(dmint);
  tq.DatabaseName := dmint.db.DatabaseName;
  tq.Active := false;
  tq.SQL.Clear;
  tq.params.Clear;
  tq.SQL.Add('Select max(bkp_nota) ultimo ' +
    'from Backup_NotaCompra B, ItemNotaCompra I, NotaCompra N ' +
    'where (n.Notac_Numero = b.Notac_Numero and n.Notc_Serie = b.Notc_Serie and n.Ent_Codigo = b.Ent_codigo) ' +
    'and (n.Notac_Numero = i.Notac_Numero and n.Notc_Serie = i.Notc_Serie and n.Ent_Codigo = i.Ent_codigo)  ' +
    'and (REF_NOTAC_NUMERO is not null or REF_NOTAC_NUMERO <> '''') ' +
    'and bkp_serie=:a ' +
    'and Notc_Emitente = ' + quotedstr('P'));
  tq.params[0].AsString := serie;
  tq.Open;
  if (tq.FieldByName('ultimo').AsString <> '') then begin
    if (tq.FieldByName('ultimo').asinteger + 1) > StrToInt(xNumNota) then
      xNumNota := strzero(tq.FieldByName('ultimo').asinteger + 1, 9);
  end;

  Result := xNumNota;
  tq.Close;
  tq.free;
  Parametros.Free;
end;

procedure TBackupVenda.consultarNotaFiscal;
begin
  p_q.SQL.Clear;
  p_q.Params.Clear;
  {if tipo=2 then begin
    p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,'+
                'n.Imp_NotaFiscal from Backup_venda b,notavenda n, entidade e where '+
                'n.notv_datafat>=:k_P_data and b.nota_serie=n.nota_serie and '+
                'b.nota_numero=n.nota_numero and b.ent_codigo=n.ent_codigo and '+
                'e.ent_codigo=n.ent_codigo group by b.Bkp_serie,b.bkp_numero,b.ent_codigo,'+
                'n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,n.Imp_NotaFiscal');
    p_q.ParamByName('k_P_data').AsDate   := P_data;
  end else begin
    if tipo=0 then begin
      p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,'+
                  'n.Imp_NotaFiscal from Backup_venda b,notavenda n, entidade e where '+
                  'n.notv_datafat>=:k_P_data and n.Imp_NotaFiscal=:k_P_tipo and '+
                  'b.nota_serie=n.nota_serie and b.nota_numero=n.nota_numero and '+
                  'b.ent_codigo=n.ent_codigo and e.ent_codigo=n.ent_codigo group by '+
                  'b.Bkp_serie,b.bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,n.Imp_NotaFiscal');
      p_q.ParamByName('k_P_tipo').AsString:= 'S'
    end else begin
      p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,'+
                  'n.Imp_NotaFiscal from Backup_venda b,notavenda n, entidade e where '+
                  'n.notv_datafat>=:k_P_data and n.Imp_NotaFiscal is null and '+
                  'b.nota_serie=n.nota_serie and b.nota_numero=n.nota_numero and '+
                  'b.ent_codigo=n.ent_codigo and e.ent_codigo=n.ent_codigo group by '+
                  'b.Bkp_serie,b.bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,n.Imp_NotaFiscal');
    end;
    p_q.ParamByName('k_P_data').AsDate  := P_data;
  end;}

  if not recibo_frete then begin
    if tipo = 2 then begin
      p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,' +
        'n.Imp_NotaFiscal from Backup_venda b,notavenda n, entidade e where ' +
        'n.notv_datafat>=:k_P_data and b.nota_serie=n.nota_serie and ' +
        'b.nota_numero=n.nota_numero and b.ent_codigo=n.ent_codigo and ' +
        'e.ent_codigo=n.ent_codigo group by b.Bkp_serie,b.bkp_numero,b.ent_codigo,' +
        'n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,n.Imp_NotaFiscal');
      p_q.ParamByName('k_P_data').AsDate := P_data;
    end else begin //if tipo<>2
      if tipo = 0 then begin
        p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,' +
          'n.Imp_NotaFiscal from Backup_venda b,notavenda n, entidade e where ' +
          'n.notv_datafat>=:k_P_data and n.Imp_NotaFiscal=:k_P_tipo and ' +
          'b.nota_serie=n.nota_serie and b.nota_numero=n.nota_numero and ' +
          'b.ent_codigo=n.ent_codigo and e.ent_codigo=n.ent_codigo group by ' +
          'b.Bkp_serie,b.bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,n.Imp_NotaFiscal');
        p_q.ParamByName('k_P_tipo').AsString := 'S'
      end else begin
        p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,' +
          'n.Imp_NotaFiscal from Backup_venda b,notavenda n, entidade e where ' +
          'n.notv_datafat>=:k_P_data and n.Imp_NotaFiscal is null and ' +
          'b.nota_serie=n.nota_serie and b.nota_numero=n.nota_numero and ' +
          'b.ent_codigo=n.ent_codigo and e.ent_codigo=n.ent_codigo group by ' +
          'b.Bkp_serie,b.bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,n.Imp_NotaFiscal');
      end; //fim if tipo=0
      p_q.ParamByName('k_P_data').AsDate := P_data;
    end; //fim if tipo=2
  end else begin //if recibo_frete
    if tipo = 2 then begin
      p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,' +
        'n.Imp_NotaFiscal from Backup_venda b,notavenda n, entidade e , MovItemPedVenda m,pedidosVenda p where ' +
        'm.nota_serie=n.nota_serie and ' +
        'm.nota_numero=n.nota_numero and m.ent_codigo=n.ent_codigo and ' +
        'p.ped_numero=m.ped_numero and p.ent_codigo=m.ent_codigo and (p.ped_tipofrete=:K_tipoFrete or p.ped_tipofrete=:K_tipoFrete2) and ' +
        'n.notv_datafat>=:k_P_data and b.nota_serie=n.nota_serie and ' +
        'b.nota_numero=n.nota_numero and b.ent_codigo=n.ent_codigo and ' +
        'e.ent_codigo=n.ent_codigo group by b.Bkp_serie,b.bkp_numero,b.ent_codigo,' +
        'n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,n.Imp_NotaFiscal');
      p_q.ParamByName('k_P_data').AsDate := P_data;
    end else begin //if tipo<>2
      if tipo = 0 then begin
        p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,' +
          'n.Imp_NotaFiscal from Backup_venda b,notavenda n, entidade e, MovItemPedVenda m,pedidosVenda p where ' +
          'm.nota_serie=n.nota_serie and ' +
          'm.nota_numero=n.nota_numero and m.ent_codigo=n.ent_codigo and ' +
          'p.ped_numero=m.ped_numero and p.ent_codigo=m.ent_codigo and (p.ped_tipofrete=:K_tipoFrete or p.ped_tipofrete=:K_tipoFrete2) and ' +
          'n.notv_datafat>=:k_P_data and n.Imp_NotaFiscal=:k_P_tipo and ' +
          'b.nota_serie=n.nota_serie and b.nota_numero=n.nota_numero and ' +
          'b.ent_codigo=n.ent_codigo and e.ent_codigo=n.ent_codigo group by ' +
          'b.Bkp_serie,b.bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,n.Imp_NotaFiscal');
        p_q.ParamByName('k_P_tipo').AsString := 'S'
      end else begin //if tipo<>0
        p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,' +
          'n.Imp_NotaFiscal from Backup_venda b,notavenda n, entidade e, MovItemPedVenda m,pedidosVenda p where ' +
          'm.nota_serie=n.nota_serie and ' +
          'm.nota_numero=n.nota_numero and m.ent_codigo=n.ent_codigo and ' +
          'p.ped_numero=m.ped_numero and p.ent_codigo=m.ent_codigo and (p.ped_tipofrete=:K_tipoFrete or p.ped_tipofrete=:K_tipoFrete2) and ' +
          'n.notv_datafat>=:k_P_data and n.Imp_NotaFiscal is null and ' +
          'b.nota_serie=n.nota_serie and b.nota_numero=n.nota_numero and ' +
          'b.ent_codigo=n.ent_codigo and e.ent_codigo=n.ent_codigo group by ' +
          'b.Bkp_serie,b.bkp_numero,b.ent_codigo,n.notv_datafat,n.rep_codigo,n.sup_codigo,e.ent_nome,n.Imp_NotaFiscal');
      end; //fim if tipo=0
      p_q.ParamByName('k_P_data').AsDate := P_data;
    end; //if tipo=2
    p_q.ParamByName('K_tipoFrete').AsString := 'F';
    p_q.ParamByName('K_tipoFrete2').AsString := '2';
  end; //fim if not recibo_frete
end;

procedure TBackupVenda.consultarNotaEntidade;
begin
  p_q.SQL.Clear;
  p_q.Params.Clear;
  p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,e.ent_nome from ' +
    'Backup_venda b,notavenda n, entidade e where n.notv_datafat>=:k_P_data and ' +
    'n.ent_codigo=:k_P_entidade and b.nota_serie=n.nota_serie and ' +
    'b.nota_numero=n.nota_numero and b.ent_codigo=n.ent_codigo and ' +
    'e.ent_codigo=n.ent_codigo group by b.Bkp_serie,b.bkp_numero,b.ent_codigo,' +
    'n.notv_datafat,e.ent_nome');
  p_q.ParamByName('k_P_data').AsDate := P_data;
  p_q.ParamByName('k_P_entidade').AsString := P_ent_codigo;
end;

function TBackupVenda.Retorna_PrimeiroUltimo(x, serie, numero: string;
  var data: TDateTime; imp: Boolean): string;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.DatabaseName := dmint.db.DatabaseName;
  tq.Active := False;
  tq.SQL.Clear;
  tq.params.Clear;
  tq.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat from ' +
    'Backup_venda b,notavenda n, entidade e where b.bkp_serie=:K_serie and ' +
    'b.nota_serie=n.nota_serie and b.nota_numero=n.nota_numero and ' +
    'b.ent_codigo=n.ent_codigo and e.ent_codigo=n.ent_codigo ');
  if numero <> '' then
    tq.SQL.Add(' and b.bkp_numero=:K_bkp_numero ');
  if not imp then
    tq.SQL.Add(' and trim(Imp_NotaFiscal) is null ');
  tq.SQL.Add(' order by n.notv_datafat,b.bkp_numero,b.ent_codigo');
  tq.ParamByName('k_serie').AsString := serie;
  if numero <> '' then
    tq.ParamByName('k_bkp_numero').AsString := numero;
  tq.Open;
  if x = 'P' then begin
    tq.first;
    data := tq.FieldByName('notv_datafat').AsDateTime;
    Result := tq.FieldByName('bkp_numero').AsString;
  end else begin
    tq.Last;
    data := tq.FieldByName('notv_datafat').AsDateTime;
    Result := tq.FieldByName('bkp_numero').AsString;
  end;
  tq.Close;
  tq.free;
end;

procedure TBackupVenda.consultarNotaSerieEnt(p_ent_codigo, p_nota_serie: string;
  P_data: TDateTime; var P_q: TQuery);
begin
  p_q.SQL.Clear;
  p_q.Params.Clear;
  p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,e.ent_nome from ' +
    'Backup_venda b,notavenda n, entidade e where n.notv_datafat>=:k_P_data and ' +
    'b.nota_serie=n.nota_serie and e.ent_codigo=n.ent_codigo and ' +
    'b.nota_numero=n.nota_numero and b.ent_codigo=n.ent_codigo ');
  if p_nota_serie <> '' then
    p_q.SQL.Add('and n.nota_serie=:k_serie ');
  if p_ent_codigo <> '' then
    p_q.SQL.Add('and n.ent_codigo=:k_ent_codigo ');
  p_q.SQL.Add('group by b.Bkp_serie,b.bkp_numero,b.ent_codigo,n.notv_datafat,e.ent_nome');
  p_q.ParamByName('k_P_data').AsDate := P_data;
  if p_nota_serie <> '' then
    p_q.ParamByName('k_serie').AsString := p_nota_serie;
  if p_ent_codigo <> '' then
    p_q.ParamByName('k_ent_codigo').AsString := p_ent_codigo;
end;

function TBackupVenda.RecuperarEntidade;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.SQL.Clear;
  tq.Params.Clear;
  tq.SQL.Add('Select ent_codigo from Backup_venda where bkp_serie=:k_Bkp_serie and ' +
    'bkp_numero=:K_bkp_numero');
  tq.ParamByName('k_Bkp_serie').AsString := p_bkp_serie;
  tq.ParamByName('k_Bkp_numero').AsString := p_bkp_numero;
  tq.Open;
  Result := tq.FieldByName('ent_codigo').AsString;
  tq.Close;
  tq.free;
end;

function TBackupVenda.RetornaBck;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.SQL.Clear;
  tq.Params.Clear;
  tq.SQL.Add('Select * from Backup_venda where nota_serie=:k_nota_serie and ' +
    'nota_numero=:K_nota_numero and ent_codigo =:k_entidade');
  tq.ParamByName('k_nota_serie').AsString := serie;
  tq.ParamByName('k_nota_numero').AsString := nota;
  tq.ParamByName('k_entidade').AsString := entidade;
  tq.Open;
  Result := tq.FieldByName('bkp_numero').AsString;
  tq.Close;
  tq.free;
end;

function TBackupVenda.Ultima_nota: string;
var
  tq: TQuery;
begin
  tq := TQuery.Create(dmint);
  tq.DatabaseName := dmint.db.DatabaseName;
  tq.Active := false;
  tq.SQL.Clear;
  tq.params.Clear;
  tq.SQL.Add('Select max(nota_numero) ultimo from Backup_Venda');
  tq.Open;
  if tq.FieldByName('ultimo').AsString = '' then
    Result := '000000001'
  else
    Result := strzero(tq.FieldByName('ultimo').asinteger + 1, 9);
  tq.Close;
  tq.free;
end;

function TBackupVenda.RetornaNota;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.SQL.Clear;
  tq.Params.Clear;
  tq.SQL.Add('Select * from Backup_venda where BKP_SERIE=:k_nota_serie and ' +
    'BKP_NUMERO=:K_nota_numero and ent_codigo =:k_entidade');
  tq.ParamByName('k_nota_serie').AsString := bkp_serie;
  tq.ParamByName('k_nota_numero').AsString := bkp_nota;
  tq.ParamByName('k_entidade').AsString := entidade;
  tq.Open;
  Result := tq.FieldByName('NOTA_NUMERO').AsString;
  tq.Close;
  tq.free;

end;

function TBackupVenda.RetornaBck1(nota, serie: string): string;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.SQL.Clear;
  tq.Params.Clear;
  tq.SQL.Add('Select * from Backup_venda where nota_serie=:k_nota_serie and ' +
    'nota_numero=:K_nota_numero');
  tq.ParamByName('k_nota_serie').AsString := serie;
  tq.ParamByName('k_nota_numero').AsString := nota;
  tq.Open;
  Result := tq.FieldByName('bkp_numero').AsString;
  tq.Close;
  tq.free;

end;

function TBackupVenda.RecuperarNotaTerceiro(P_bkp_serie, p_bkp_numero,
  p_Entidade: string; var P_Not1, P_Not2: string): Byte;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt.Db);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := False;
  tq.SQL.Clear;
  tq.Params.Clear;
  tq.Close;
  tq.SQL.Add('Select * from Backup_venda where bkp_serie=:k_Bkp_serie and ' +
    'bkp_numero=:K_bkp_numero and ent_Codigo =:k_ent');
  tq.ParamByName('k_Bkp_serie').AsString := p_bkp_serie;
  tq.ParamByName('k_Bkp_numero').AsString := StrZero(p_bkp_numero, 9);
  tq.ParamByName('k_ent').AsString := StrZero(p_Entidade, 5);
  tq.Open;

  P_Not1 := '*';
  P_Not2 := '*';
  if tq.eof then
    Result := 0
  else
    Result := 1;
  while not tq.Eof do begin
    if P_Not1 = '*' then
      P_Not1 := tq.FieldByName('nota_numero').AsString
    else
      P_Not2 := tq.FieldByName('nota_numero').AsString;
    Cod_Entidade := tq.FieldByName('ent_codigo').AsString;
    tq.Next;
  end;
  tq.Close;
  tq.free;

end;

function TBackupVenda.Retorna_UltimaTemp(serie: string): string;
var
  tq: TQuery;
begin
  tq := TQuery.Create(dmint);
  tq.DatabaseName := dmint.db.DatabaseName;
  tq.Active := false;
  tq.SQL.Clear;
  tq.params.Clear;
  tq.SQL.Add('Select max(bkp_numero_orig) ultimo ' +
    'from Backup_Venda B ' +
    'where bkp_serie_orig=:a ');
  tq.params[0].AsString := serie;
  tq.Open;
  if tq.FieldByName('ultimo').AsString = '' then
    Result := '000000001'
  else
    Result := strzero(tq.FieldByName('ultimo').asinteger + 1, 9);
  tq.Close;
  tq.free;
end;

procedure TBackupVenda.consultarNotaSerie(p_Serie: string;
  P_data: TDateTime; var P_q: TQuery);
begin
  p_q.SQL.Clear;
  p_q.Params.Clear;
  p_q.SQL.Add('Select b.Bkp_serie,b.Bkp_numero,b.ent_codigo,n.notv_datafat,e.ent_nome from ' +
    'Backup_venda b,notavenda n, entidade e where n.notv_datafat>=:k_P_data and ' +
    'n.nota_serie=:k_P_serie and b.nota_serie=n.nota_serie and ' +
    'b.nota_numero=n.nota_numero and b.ent_codigo=n.ent_codigo and ' +
    'e.ent_codigo=n.ent_codigo group by b.Bkp_serie,b.bkp_numero,b.ent_codigo,' +
    'n.notv_datafat,e.ent_nome');
  p_q.ParamByName('k_P_data').AsDate := P_data;
  p_q.ParamByName('k_P_serie').AsString := P_serie;

end;

function TBackupVenda.RecuperarPorBackup(bkp_nota, bkp_serie,
  entidade: string; var Nota: TNotaVenda): boolean;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := False;
  tq.SQL.Clear;
  tq.Params.Clear;
  tq.SQL.Add('SELECT * ' +

    'FROM Backup_Venda ' +

    'where Bkp_Serie = :a and Bkp_numero = :b and Ent_codigo = :c');

  tq.ParamByName('a').AsString := bkp_serie;
  tq.ParamByName('b').AsString := StrZero(bkp_nota, 9);
  tq.ParamByName('c').AsString := StrZero(entidade, 5);
  tq.Open;

  if tq.eof then begin
    Result := false;

  end else begin
    Nota := TNotavenda.Create;

    if (Nota.Recuperar(tq.FieldByName('nota_serie').AsString, tq.FieldByName('nota_numero').AsString, tq.FieldByName('nota_numero').AsString, tq.FieldByName('ent_codigo').AsString) = 1) then begin
      Result := true;
    end else begin
      Result := false;
    end;

  end;
  tq.Close;
  tq.Free;

end;

procedure TBackupVenda.RecuperarBackup2(p_serie, p_nota, p_ent: string; var p_bkp_nota: string);
var
  tq: TQuery;

begin
  tq := TQuery.create(DmInt);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.SQL.Clear;
  tq.Params.Clear;
  tq.SQL.Add('Select * from Backup_Venda where Nota_Serie=:a and Nota_Numero=:b and ent_codigo = :c');
  tq.params[0].AsString := p_serie;
  tq.params[1].AsString := p_nota;
  tq.params[2].AsString := p_ent;
  tq.Open;
  p_bkp_nota := tq.FieldByName('bkp_numero').AsString;
  cod_entidade := tq.FieldByName('ent_codigo').AsString;
  Bkp_Serie_Orig := tq.FieldByName('bkp_serie_orig').AsString;
  Bkp_Numero_Orig := tq.FieldByName('bkp_numero_orig').AsString;
  tq.Close;
  tq.free;

end;

function TBackupVenda.RecuperarNota1(P_bkp_serie, p_bkp_numero, p_entidade: string; var P_Not1, P_Not2: string): Byte;
var
  tq: TQuery;

begin
  tq := TQuery.create(DmInt.Db);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := False;
  tq.SQL.Clear;
  tq.Params.Clear;
  tq.Close;
  tq.SQL.Add('Select * from Backup_venda where bkp_serie=:k_Bkp_serie and ' +
    'bkp_numero=:K_bkp_numero and ent_codigo =:k_entidade');
  tq.ParamByName('k_Bkp_serie').AsString := p_bkp_serie;
  tq.ParamByName('k_Bkp_numero').AsString := StrZero(p_bkp_numero, 9);
  tq.ParamByName('k_entidade').AsString := strzero(p_entidade, 5);
  tq.Open;

  P_Not1 := '*';
  P_Not2 := '*';
  if tq.eof then
    Result := 0
  else
    Result := 1;
  while not tq.Eof do begin
    if P_Not1 = '*' then
      P_Not1 := tq.FieldByName('nota_numero').AsString
    else
      P_Not2 := tq.FieldByName('nota_numero').AsString;
    Cod_Entidade := tq.FieldByName('ent_codigo').AsString;
    tq.Next;
  end;
  tq.Close;
  tq.free;
end;

function TBackupVenda.Retorna_FirsLast;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.DatabaseName := dmint.db.DatabaseName;
  tq.Active := False;
  tq.SQL.Clear;
  tq.params.Clear;
  tq.SQL.Add('Select max(b.Bkp_numero) Maximo,min(b.Bkp_numero) Minimo ' +
    'from ' +
    'Backup_venda b,notavenda n, entidade e where b.bkp_serie=:K_serie and ' +
    'b.nota_serie=n.nota_serie and b.nota_numero=n.nota_numero and ' +
    'b.ent_codigo=n.ent_codigo and e.ent_codigo=n.ent_codigo ');
  tq.SQL.Add(' and Notv_DataFat>=:dtI and Notv_DataFat <=:dtF');
  if not imp then
    tq.SQL.Add(' and trim(Imp_NotaFiscal) is null ');
  tq.ParamByName('k_serie').AsString := serie;
  tq.ParamByName('dtI').AsDateTime := dataI;
  tq.ParamByName('dtF').AsDateTime := dataF;
  tq.Open;
  if x = 'P' then begin
    Result := tq.FieldByName('Minimo').AsString;
  end else begin
    Result := tq.FieldByName('Maximo').AsString;
  end;
  tq.Close;
  tq.free;
end;

function TBackupVenda.RecuperarNota(P_bkp_serie, p_bkp_numero,
  p_entidade: string; var P_Not1, P_Not2: string): Byte;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt.Db);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := False;
  tq.SQL.Clear;
  tq.Params.Clear;
  tq.Close;
  tq.SQL.Add('Select * from Backup_venda where bkp_serie=:k_Bkp_serie and ' +
    'bkp_numero=:K_bkp_numero ');
  if trim(p_entidade) <> '' then
    tq.SQL.Add(' and ent_codigo =:k_entidade');
  tq.ParamByName('k_Bkp_serie').AsString := p_bkp_serie;
  tq.ParamByName('k_Bkp_numero').AsString := StrZero(p_bkp_numero, 9);
  if trim(p_entidade) <> '' then
    tq.ParamByName('k_entidade').AsString := StrZero(p_entidade, 5);
  tq.Open;

  P_Not1 := '*';
  P_Not2 := '*';
  if tq.eof then
    Result := 0
  else
    Result := 1;
  while not tq.Eof do begin
    if P_Not1 = '*' then
      P_Not1 := tq.FieldByName('nota_numero').AsString
    else
      P_Not2 := tq.FieldByName('nota_numero').AsString;
    Cod_Entidade := tq.FieldByName('ent_codigo').AsString;
    tq.Next;
  end;
  tq.Close;
  tq.free;
end;

function TBackupVenda.RecuperarNota2(p_bkp_numero, p_entidade: string; var P_Not1, P_Not2: string): Byte;
var
  tq: TQuery;

begin
  tq := TQuery.create(DmInt.Db);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := False;

  try
    tq.SQL.Clear;
    tq.Params.Clear;
    tq.Close;
    tq.SQL.Add('Select * ' +

      'from Backup_venda ' +

      'where bkp_numero = :K_bkp_numero and ' +
      '      ent_codigo = :k_entidade');

    tq.ParamByName('k_Bkp_numero').AsString := StrZero(p_bkp_numero, 9);
    tq.ParamByName('k_entidade').AsString := strzero(p_entidade, 5);
    tq.Open;

    P_Not1 := '*';
    P_Not2 := '*';

    if tq.eof then begin
      Result := 0
    end else begin
      Result := 1;
    end;

    while not tq.Eof do begin
      if P_Not1 = '*' then begin
        P_Not1 := tq.FieldByName('nota_numero').AsString
      end else begin
        P_Not2 := tq.FieldByName('nota_numero').AsString;
      end;

      Cod_Entidade := tq.FieldByName('ent_codigo').AsString;
      tq.Next;

    end;

  finally
    tq.Close;
    tq.free;

  end;

end;

end.

